package com.hhxy.arraylist;

import java.util.ArrayList;

public class TraversalAndRemove {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(98);
        list.add(77);
        list.add(66);
        list.add(89);
        list.add(79);
        list.add(50);
        list.add(100);
        System.out.println("删除前list集合中的元素有：" + list);
        System.out.println("删除后list集合中的元素有；");
        /*遍历list集合*/
        /*--------------------------------------------------------------------------------------------------------*/
        //1.存在bug的代码，原因：当删除第i个元素时，后面的元素索引位置都减一了，会造成后面紧挨着的一个元素无法删除
        /*for (int i = 0; i <list.size() ; i++) {
            System.out.print("list集合中的元素有；"+list.get(i)+" ");
            if(list.get(i)<80){
                list.remove(i);
            }
        }
        System.out.println(list);//输出结果：[98, 77, 66, 89, 79, 50, 100]*/
        /*--------------------------------------------------------------------------------------------------------*/
        //2.解决方法1：每次进行删除操作后对i进行减一操作
/*        for (int i = 0; i < list.size(); i++) {
            if (list.get(i) < 80) {
                list.remove(i);
                i--;
            }
        }
        System.out.println(list);输出结果：[98, 89, 100]*/
        /*--------------------------------------------------------------------------------------------------------*/
        //3.解决方法2：倒序遍历
        for (int i = list.size()-1; i >=0 ; i--) {
            if (list.get(i) < 80) {
                list.remove(i);
            }
        }
        System.out.println(list);//输出结果：[98, 89, 100]
    }
}
